package ace.module.captcha.core.impl.service;

import ace.module.captcha.api.model.dto.CaptchaImageDto;
import ace.module.captcha.core.impl.controller.graphql.model.dto.CaptchaItemBase64DataImageDto;
import ace.module.captcha.core.impl.service.model.CaptchaImageCreateResultBo;

/**
 * @author Caspar
 * @create 2020/11/5 图片验证码服务
 */
public interface CaptchaImageService {
  /**
   * 创建验证码图片
   *
   * @param captchaAppId
   * @return 验证码图片流
   */
  CaptchaImageCreateResultBo create(Long captchaAppId);

  /**
   * 创建验证码图片
   *
   * @param appBizTypeId
   * @return 验证码图片Base64格式
   */
  CaptchaImageDto createBase64(Long appBizTypeId);

  /**
   * 检查验证码是否正确
   */
  void verify(Long captchaItemId, String captcha);

  CaptchaItemBase64DataImageDto createBase64WithItem(Long captchaAppId);

  /**
   * 创建验证码图片
   *
   * @param captchaAppKey 图形验证码应用key
   * @return
   */
  CaptchaImageDto createBase64ByAppKey(String captchaAppKey);
}
